from datetime import datetime

from exts import db


# 定义文章分类模型
class Article_type(db.Model):
    # 一个类别可以对应多个文章
    # 文章和分类之间是什么关系
    __tablename__ = 'article_type'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    type_name = db.Column(db.String(20),nullable=False)
    
    # 根据分类去看有哪些文章的外键，backref后面的是一个别名
    articles = db.relationship('Articles',backref='articletype')
    
    def __str__(self):
        return self.type_name

class Articles(db.Model):
    __tablename__ = 'articles'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    content = db.Column(db.Text,nullable=False)
    pddatetime = db.Column(db.DateTime,default=datetime.now) # 文章创建时间
    click_num = db.Column(db.Integer,default=0) # 点赞量
    save_num = db.Column(db.Integer,default=0) # 收藏量
    love_num = db.Column(db.Integer,default=0) # 喜欢量
    
    # 外键，关联user表,同步到数据库中的外键关系
    user_id = db.Column(db.Integer,db.ForeignKey('user.id'),nullable=False,default=1)
    # user = db.relationship('User',back_populates='articles') # 在User中已经建立关系，所以可以省略
    
    # 增加一个字段和文章分类表建立关系
    type_id = db.Column(db.Integer,db.ForeignKey('article_type.id'),nullable=False,default=1)
    # articles = db.relationship('Article_type',backref='article')
    
    # 增加一个字段和评论表建立关系，通过文章找对应的评论,backref
    # comment_id = db.Column(db.Integer,db.ForeignKey('comment.id')) 
    # comments = db.relationship('Comment',backref='article')
    

    def __str__(self):
        return self.title

# class Comment(db.Model):
#     __tablename__ = 'comment'    
#     id = db.Column(db.Integer,primary_key=True,autoincrement=True)
#     comment = db.Column(db.String(255),nullable=False) # 评论内容
    
#     # 评论的外键是用户id
#     user_id = db.Column(db.Integer,db.ForeignKey('user.id'))
#     # # 评论的外键是文章id
#     article_id = db.Column(db.Integer,db.ForeignKey('articles.id'))
#     cdatetime = db.Column(db.DateTime,default=datetime.now) # 评论的时间
    
#     articles_comment = db.relationship('Articles',back_populates='comment')
    
#     def __str__(self):
#         return self.comment